System and method for discovering and publishing of presence information on a network

ABSTRACT

A system and method is provided for publication and discovery of the presence of nearby users on a network. When the system is enabled, the presence of the local user is published on the network. Nearby users that also have a similar system enabled can discover the local user&#39;s presence on the network. Furthermore, the local user may discovery the presence of the other nearby users that are currently publishing their presence on the network.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of and claims priority to applicationSer. No. 10/836,566, filed May 1, 2004, entitled SYSTEMS AND METHOD FORDISCOVERY AND PUBLISHING OF PRESENCE INFORMATION ON A NETWORK, indicatedto be granted as U.S. Pat. No. 8,239,452, on Aug. 7, 2012, which ishereby incorporated in its entirety by reference.

BACKGROUND OF THE INVENTION

The concept of presence has increasingly come to the foreground ofnetworking applications and real-time communications. Presence oftenrefers to the ability to detect whether a user is online and available.One example of an application that takes advantage of presenceinformation is an Instant Messenger (IM) program. An IM program providesa method for a user to send instant messages to other IM users on theInternet or on a network. IM is a type of communications service thatenables a user to create a kind of private chat room with anotherindividual in order to communicate in real time over the Internet. IM isanalogous to a telephone conversation, but uses text-based, notvoice-based, communication. Typically, the instant messaging systemalerts a user whenever somebody on the user's private list is online.The user may then initiate a chat session with that particularindividual.

However, presence for IM and other similar applications has been limitedto presence information that is directly associated with a contactalready established by the user. Presence of other users outside of theuser's listed contacts has been unobtainable. Other applications haveallowed for discovery of what devices are on a network, but not of theusers.

SUMMARY OF THE INVENTION

The present invention is generally directed towards providing a systemand method for publishing and discovery of presence information fornearby users on a network. In accordance with the present invention whena local user enables a PNM (people near me) system on their computingdevice, the local user's presence is published on the network. Otherusers with a similar PNM system enabled that are nearby to the localuser are able to discover the local user's presence on the network as itis published. Furthermore, the local user is also able to discover theother users on the network that have their PNM system enabled. Thediscovered presence information for nearby users is displayed such thatthe local user may monitor the presence of others nearby on the network.The PNM system provides a method for moving beyond mere discovery ofdevices to discovery of people on the network. For businesses thatusually have a project group working together in close proximity to eachother, the present invention provides a method of interaction with themembers of the group without the necessity of pre-generating thecontacts to establish a relationship among the project group.

In accordance with one aspect of the present invention, acomputer-implemented method for publishing and discovering presenceinformation on a network is provided. A contact is published thatrepresents a local user on the network. The network is also monitoredfor presence of a contact representing a nearby user on the network. Anoutput notifying of the presence of the nearby user on the network isproduced.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an exemplary computing device that may be usedaccording to exemplary embodiments of the present invention.

FIG. 2 shows an alternative operating environment for a mobile devicesubstantially for use in the present invention.

FIG. 3 illustrates an exemplary sidebar within a desktop;

FIG. 4 illustrates a functional block diagram of a system for discoveryand publication of nearby presence information on a network;

FIG. 5 illustrates another functional block diagram of a system fordiscovery and publication of nearby presence information on a network;

FIG. 6 illustrates exemplary file structures corresponding to a filesystem for storing presence information;

FIG. 7 illustrates exemplary sidebar tiles associated with publicationand discovery of presence of nearby user's on a network;

FIG. 8 illustrates an exemplary state table for implementing the userinterface for the publication and discovery of presence information onthe network; and

FIG. 9 illustrates exemplary identity verification with relation to apresence notification of a nearby user, in accordance with the presentinvention.

DETAILED DESCRIPTION

The present invention now will be described more fully hereinafter withreference to the accompanying drawings, which form a part hereof, andwhich show, by way of illustration, specific exemplary embodiments forpracticing the invention. This invention may, however, be embodied inmany different forms and should not be construed as limited to theembodiments set forth herein; rather, these embodiments are provided sothat this disclosure will be thorough and complete, and will fullyconvey the scope of the invention to those skilled in the art. Amongother things, the present invention may be embodied as methods ordevices. Accordingly, the present invention may take the form of anentirely hardware embodiment, an entirely software embodiment or anembodiment combining software and hardware aspects. The followingdetailed description is, therefore, not to be taken in a limiting sense.

Illustrative Operating Environment

With reference to FIG. 1, one exemplary system for implementing theinvention includes a computing device, such as computing device 100.Computing device 100 may be configured as a client, a server, mobiledevice, or any other computing device that provides for discovering andpublishing presence information. In a very basic configuration,computing device 100 typically includes at least one processing unit 102and system memory 104. Depending on the exact configuration and type ofcomputing device, system memory 104 may be volatile (such as RAM),non-volatile (such as ROM, flash memory, etc.) or some combination ofthe two. System memory 104 typically includes an operating system 105,one or more applications 106, and may include program data 107. In oneembodiment, application 106 includes a people near me application 120.This basic configuration is illustrated in FIG. 1 by those componentswithin dashed line 108.

Computing device 100 may have additional features or functionality. Forexample, computing device 100 may also include additional data storagedevices (removable and/or non-removable) such as, for example, magneticdisks, optical disks, or tape. Such additional storage is illustrated inFIG. 1 by removable storage 109 and non-removable storage 110. Computerstorage media may include volatile and nonvolatile, removable andnon-removable media implemented in any method or technology for storageof information, such as computer readable instructions, data structures,program modules, or other data. System memory 104, removable storage 109and non-removable storage 110 are all examples of computer storagemedia. Computer storage media includes, but is not limited to, RAM, ROM,EEPROM, flash memory or other memory technology, CD-ROM, digitalversatile disks (DVD) or other optical storage, magnetic cassettes,magnetic tape, magnetic disk storage or other magnetic storage devices,or any other medium which can be used to store the desired informationand which can be accessed by computing device 100. Any such computerstorage media may be part of device 100. Computing device 100 may alsohave input device(s) 112 such as keyboard, mouse, pen, voice inputdevice, touch input device, etc. Output device(s) 114 such as a display,speakers, printer, etc. may also be included.

Computing device 100 also contains communication connections 116 thatallow the device to communicate with other computing devices 118, suchas over a network. Communication connection 116 is one example ofcommunication media. Communication media may typically be embodied bycomputer readable instructions, data structures, program modules, orother data in a modulated data signal, such as a carrier wave or othertransport mechanism, and includes any information delivery media. Theterm “modulated data signal” means a signal that has one or more of itscharacteristics set or changed in such a manner as to encode informationin the signal. By way of example, and not limitation, communicationmedia includes wired media such as a wired network or direct-wiredconnection, and wireless media such as acoustic, RF, infrared and otherwireless media. The term computer readable media as used herein includesboth storage media and communication media.

FIG. 2 shows an alternative operating environment for a mobile devicesubstantially for use in the present invention. In one embodiment of thepresent invention, mobile device 200 is integrated as a computingdevice, such as an integrated personal digital assistant (PDA) andwireless phone.

In this embodiment, mobile device 200 has a processor 260, a memory 262,a display 228, and a keypad 232. Memory 262 generally includes bothvolatile memory (e.g., RAM) and non-volatile memory (e.g., ROM, FlashMemory, or the like). Mobile device 200 includes an operating system264, which is resident in memory 262 and executes on processor 260.Keypad 232 may be a push button numeric dialing pad (such as on atypical telephone), a multi-key keyboard (such as a conventionalkeyboard), or may not be included in the mobile device in deference to atouch screen or stylus. Display 228 may be a liquid crystal display, orany other type of display commonly used in mobile computing devices.Display 228 may be touch-sensitive, and would then also act as an inputdevice.

One or more application programs 266 are loaded into memory 262 and runon operating system 264. Examples of application programs include phonedialer programs, e-mail programs, scheduling programs, PIM (personalinformation management) programs, word processing programs, spreadsheetprograms, Internet browser programs, and so forth. In one embodiment,application programs 266 include a people near me (PNM) application 280.Mobile device 200 also includes non-volatile storage 268 within thememory 262. Non-volatile storage 268 may be used to store persistentinformation which should not be lost if mobile device 200 is powereddown. The applications 266 may use and store information in storage 268,such as e-mail or other messages used by an e-mail application, contactinformation used by a PIM, appointment information used by a schedulingprogram, documents used by a word processing application, and the like.A synchronization application also resides on the mobile device and isprogrammed to interact with a corresponding synchronization applicationresident on a host computer to keep the information stored in thestorage 268 synchronized with corresponding information stored at thehost computer.

Mobile device 200 has a power supply 270, which may be implemented asone or more batteries. Power supply 270 might further include anexternal power source, such as an AC adapter or a powered docking cradlethat supplements or recharges the batteries.

Mobile device 200 is also shown with two types of external notificationmechanisms: an LED 240 and an audio interface 274. These devices may bedirectly coupled to power supply 270 so that when activated, they remainon for a duration dictated by the notification mechanism even thoughprocessor 260 and other components might shut down to conserve batterypower. LED 240 may be programmed to remain on indefinitely until theuser takes action to indicate the powered-on status of the device. Audiointerface 274 is used to provide audible signals to and receive audiblesignals from the user. For example, audio interface 274 may be coupledto a speaker for providing audible output and to a microphone forreceiving audible input, such as to facilitate a telephone conversation.

Mobile device 200 also includes a radio 272 that performs the functionof transmitting and receiving radio frequency communications. Radio 272facilitates wireless connectivity between the mobile device 200 and theoutside world, via a communications carrier or service provider.Transmissions to and from the radio 272 are conducted under control ofthe operating system 264. In other words, communications received by theradio 272 may be disseminated to application programs 266 via theoperating system 264, and vice versa.

The radio 272 allows the mobile device 200 to communicate with othercomputing devices, such as over a network. The radio 272 is one exampleof communication media. Communication media may typically be embodied bycomputer readable instructions, data structures, program modules, orother data in a modulated data signal, such as a carrier wave or othertransport mechanism, and includes any information delivery media. Theterm “modulated data signal” means a signal that has one or more of itscharacteristics set or changed in such a manner as to encode informationin the signal. By way of example, and not limitation, communicationmedia includes wired media such as a wired network or direct-wiredconnection, and wireless media such as acoustic, RF, infrared and otherwireless media. The term computer readable media as used herein includesboth storage media and communication media.

Illustrative Presence Discovery and Publication System

The present invention generally provides a system for discoveringpresence information of people nearby to a user, as well as publishingthe user's presence to those people nearby. As used herein, the term“nearby” means people connected within either network or physicalproximity to the user. For example, people who's devices are connectedwithin the same local area network may be considered “nearby” to oneanother. Also, people who's devices are connected to the same networkmay be considered “nearby”. Additionally, the users present on alink-local network may be considered “nearby”. Alternatively,designation of physical location may also be included in the presenceinformation such that people in the same room are those that areconsidered “nearby”. The use of “nearby” in the present application isnot limited to a single level of proximity, or require immediatecloseness between the user and those people designated as “nearby”.“Nearby” may be designated for any relationship between users based uponeither physical or network location of the person or their associateddevice (e.g., computing device, mobile device, etc.).

FIG. 3 illustrates an exemplary sidebar within a desktop in accordancewith the present invention. Sidebar 310 in desktop 300 includes tiles(e.g., 320) that provide a variety of information to the user during acomputing session. For example, tiles within sidebar 310 may includemedia information, e-mail notifications, schedule notifications, as wellas other information. Each tile may include icons and other content thatdifferentiates the tiles from one another. Also included in accordancewith the present invention, is PNM (people near me) sidebar tile 330,that peripherally and unobtrusively provides presence information to theuser.

The exemplary PNM sidebar tile 330 includes an indicator of presencepublished by the user 332, notification of presence of other users 334,and selection to view more detailed presence information 336. In thisexample, indicator 332 provides the alias selected by the user that ispublished to other users on the network. Notification 334 provides adynamically updated number of the users that are currently considerednearby to the user (e.g., 23 users are nearby). Selection 336 provides alink to more detailed information regarding the presence of other userson the network. For example, when a user selects selection 336, window340 is opened to provide the user with the detailed information.

Window 340 provides the user with more detailed information of usersnearby on the network. In one embodiment, the information within window340 includes presence information along with contact informationprovided by a contacts application associated with the computing device.For example, detailed information in window 340 may include adifferentiation of those contacts that are offline and those that areonline. Other details of the users and contacts present on the networkmay also be provided through window 340. In one embodiment, window 340is a “flyout” or window that is a component of the sidebar tile. Inanother embodiment, window 340 is produced by a contacts application andthe PNM information is provided to the contacts application forinclusion within the contacts UI.

FIG. 4 illustrates a functional block diagram of a system for discoveryand publication of nearby presence information on a network inaccordance with the present invention. System 400 includes a PNM (peoplenear me) sidebar tile 410 (see FIG. 3), a rover 420, SSDP (simpleservice discovery protocol) layer 430, file system 440, and networkinglayer 450. Rover 420 includes PNM component 422.

PNM sidebar tile 410 is a user interface that provides peripheral andunobtrusive notification to a user of those people considered nearby tothe user. PNM sidebar tile 410 is described in greater detail withrelation to the discussions of FIGS. 7 and 8 below.

SSDP layer 430 provides the protocol for discovering and publishing thepresence information on the network. SSDP layer 430 is considered asubset protocol of a UPnP (universal plug and play) protocol forconnectivity of devices on a network. UPnP is built on existingprotocols and technologies. For example, UPnP uses TCP/IP, UDP/IP, andHTTP protocols as a base. In addition to these base protocols, severalother protocols build on top of these to implement the various steps orphases of UPnP networking, such as SSDP. The form of the PNM messagestransmitted and received according to SSDP layer 430 are described ingreater detail with relation to FIG. 5 below.

File system 440 provides an extensible storage location for theinformation regarding the presence of people nearby to the user. In oneembodiment, file system 440 is the WinFS file system created byMicrosoft Corporation of Redmond, Wash. File system 440 is arranged toallow the PNM (people near me) information to be presented through morethan one UI (user interface) and link the PNM information to otherdatabases for their use. For example, file system 440 may include acontacts folder, where the user's contacts are stored. The PNMinformation may be used to indicate to the user which of the contactslisted is considered nearby to the user. Other relationships between thePNM information and other data may also be formed to providedistribution and use of the PNM information across multipleapplications.

Networking layer 450 includes the drivers and access to the network forcommunication of the PNM information. The network may be the Internet ora private network. The user's presence is published via networking layer450 while presence information of other is received through networkinglayer 450. The structure of networking layer 450 may be any structurethat allows discovery and publication of presence information inaccordance with the present invention.

PNM component 422 in rover 420 provides for coordination andcommunication between PNM sidebar tile 410, SSDP layer 430, and filesystem 440. PNM component 422 receives events through SSDP layer 430indicating updates to the presence information on the network. PNMcomponent 422 also receives changes selected by the user regardingpublication of the user's presence and changes to the display of thepresence information by PNM sidebar tile 410. PNM component 422 provideschanges to the presence data within file system 440 in response to thechanges from the PNM side bar tile 410 and SSDP layer 430.

FIG. 5 illustrates another functional block diagram of a system fordiscovery and publication of nearby presence information on a network inaccordance with the present invention. System 500 is similar to system400 of FIG. 4 with greater detail shown with regard to the operation ofthe PNM (people near me) functionality. System 500 includes PNM sidebartile 502, PNM publishing function 504, PNM discovery function 506, PNMpersist function 508, SSDP layer 510, networking layer 512, contactsuser interface 514, files system 516, and PNM folder 518.

PNM sidebar tile 502 is similar to PNM sidebar tile 410 shown in FIG. 4,and is used to allow the user to make changes to the PNM functionalityand view the presence information provided by the PNM system. In theexample shown, PNM sidebar tile 502 queries directly to file system 516for the number of people nearby and the other information presented byPNM sidebar tile 502. In another embodiment, PNM sidebar tile 502communicates with a user interface for a contacts application (e.g.,contacts UI 514). The contacts user interface coordinates between PNMsidebar tile 502 and file system 516 to present the PNM informationusing contacts UI 514.

PNM publishing function 504 publishes the data about the local user onthe network. SSDP layer 510 publishes the data as an alive packet thatindicates that the local user is online, and the data includesinformation such as the user's display name. The alive packet indicatesthat the local user is present on the network and available. Additionalinformation published in the alive packet includes a sharing addressthat resolves to the local user's machine address. In an additionalembodiment, the alive packet may include identity verification data,such as a public key and/or private key, that allows a user to verifythe identity of the user that is present on the network. A process foridentity verification of people nearby is discussed in greater detailbelow with relation to the discussion of FIG. 9.

A “bye-bye” message is also published by SSDP layer 510 in response tothe local user selecting to disable the PNM service. The bye-bye messagerefers to a notification provided to the network that the local user'spresence on the network is discontinuing.

Additionally, other information related to the SSDP protocol is alsopublished, such as a maximum lifetime property. The maximum lifetimeproperty is included in the cache control header of the SSDP message andrefers to the number of seconds that the PNM service of the local useris valid. In one instance, the maximum lifetime property is provided incase the PNM service ends suddenly, without a bye-bye message beingpublished. The expiration of the maximum lifetime property notifiesother users that a particular user's presence on the network has timedout, and the user is no longer present. A long as the local usermaintains the PNM service as enabled, alive packets are continuallypublished on the network that renew the maximum lifetime property suchthat indications of the local user's presence on the network ismaintained.

Also published in the cache control header of the SSDP alive packet andbye-bye message is a service ID. The service ID uniquely identifies eachof the users that are present on the network.

In an alternative embodiment, PNM publishing function 504 publishes onlya portion of the data that is to be provided to nearby user's on thenetwork in message or packet form. The remaining data is insteadprovided to a nearby user using a dedicated port established by thelocal user in response to a request by nearby user. Using these methodsof communication in combination to provide data to nearby users reducesthe size of the packets and increases their throughput speed on thenetwork to update presence notifications more quickly.

Various events may also require that an alive packet be republished. Forexample, the user may select to change their display name. The alivepacket is republished with the changed display name but the same serviceID. Accordingly, users on the network know that the change is not a newPNM presence on the network, but the same presence with a new displayname.

PNM discovery function 506 queries for the presence information relatedto other users nearby on the network for display to the local user. SSDPlayer 510 receives the alive and bye-bye messages from the network andmaintains a database of the users currently nearby. In response toevents on the network (e.g., receipt of alive packet), SSDP layer 510forwards the message corresponding to the event to PNM discoveryfunction 506. In one embodiment, SSDP layer 510 also tracks the maximumlifetime property of each alive packet received and sends a notificationto PNM discovery function 506 when the property expires. PNM discovery506 forwards changes due to the events on the network to PNM persistfunction 508.

PNM persist function 508 provides instructions for changes to the datastored in file system 516 and PNM folder 518. In one embodiment, PNMfolder 518 includes a list of the users that are nearby to the localuser. PNM folder 518 may be linked with other folders in file system516. Exemplary folder relationships between PNM folder 518 and otherfolders in file system 516 are described in FIG. 6 below.

The discussion throughout the specification and claims refers to“publishing presence information” and “publishing contacts”. Thesephrases and their variances refer to providing retrievable informationon the network about a user on the network. The published informationmay include the alive packet referred to above, the bye-bye message,identity information, general contacts information (e.g., phone numbers,address, etc.), and any other information related to an entity or deviceconnected to the network.

FIG. 6 illustrates exemplary file structures corresponding to a filesystem for storing presence information in accordance with the presentinvention. File system 600 includes PNM folder 610, person object 612,and personal contacts folder 620.

When the SSDP layer forwards an alive message to the PNM component ofthe rover (see FIG. 4), person object 612 is instantiated. Data from thealive message, such as the share address and display name, is populatedinto person object 612. In one embodiment, verification of the data inalive message is done before population into person object 612 to ensureauthenticity of the data provided. Verification prevents unauthorizedbrowser actions due to false addresses and storage of false entrieswithin a local user's contacts.

In one embodiment, person object 612 is associated with PNM folder 610as a contact entry. A local user may therefore open PNM folder 610 toview all the contact entries corresponding to other users nearby.Furthermore, a process may then count the number of entries within PNMfolder 610 to provide a display of the number of people nearby to thelocal user.

In another embodiment, a relationship may be generated between thecontact entries in personal contacts folder 620 and the contact entriesin PNM folder 610. The relationship is generated when the alive messagereceived has an associated identity verification. For example, publickey encryption may have been used in conjunction with the alive messageto verify the identity of the source of the alive message. The use ofpublic key encryption with the PNM system is described in greater detailwith respect to FIG. 9 below. When the identity of the user sending thealive message is verified as an existing entry in personal contactsfolder 620, a link is generated to that entry rather than a new personobject. Accordingly, the entry in PNM folder 610 includes rich contentassociated with personal contacts folder 620 (e.g., addresses, phonenumbers, pictures, etc.) rather than the simple person object with thedisplay name and sharing address. Additionally, the relationship isreciprocated with the entry in personal contacts folder 620, such thatwhen the entry is opened in personal contacts folder 620 the presenceinformation is shown (e.g., display name, online status, sharingaddress, etc.).

In yet another embodiment, a relationship is created between the personobject 612 and personal contacts folder 620. With the relationship, thePNM contact entries are reflected within personal contacts folder 620,but remain identified as PNM contacts according to a PNM GUID (PNMglobal unique identifier). In one instance, the PNM GUID is identifiedaccording to a PNM designator that identifies all PNM entries combinedwith the service ID (see discussion of FIG. 5). Accordingly, the PNMGUID identifies a contact entry as a PNM contact, and distinguishes eachPNM contact from one another. A process may then count the number ofcontact entries within personal contacts 620 that have an associated PNMGUID to display the number of people nearby. Furthermore, uniquelyidentifying the PNM entries allows personal contacts folder 620 toremove the PNM entries when the local user selects to disable the PNMservice. File system 600 is therefore synchronizes with the presence ofpeople nearby on the network, since personal contacts folder 620 may beupdated as people move on and off the network and the local user enablesand disables the PNM service.

Storing the PNM contacts as part of the local user's general (i.e.,personal) contacts list also allows other applications to take advantageof the presence information for people nearby. For example, a generalcontacts user interface may be used to generally view the local user'slist of contacts. By populating personal contacts folder 620 with thePNM contacts, the PNM contacts are reflected in the general contactsuser interface. Other applications (e.g., contact picker dialogue) thataccess personal contacts folder 620 are also able to take advantage ofthe presence information and display people that are nearby on thenetwork.

FIG. 7 illustrates exemplary sidebar tiles associated with publicationand discovery of presence of nearby users on a network in accordancewith the present invention. Three tile scenarios are shown that providefor different sidebar tiles based upon the user selections and the stateof the network. In each scenario a possible reduced view of the sidebartile is provided (e.g., 712) along with a possible expanded view (e.g.,714). In another embodiment, each expanded view (e.g., 714) may be aflyout or separate window that is generated rather than within thesidebar itself.

Scenario 710 illustrates exemplary UI for when the PNM (people near me)service has yet to be enabled by the user. Reduced PNM sidebar tile 712provides a selection to enable the service. Expanded PNM sidebar tile714 provides further options regarding the display name the local userwants published and other options for configuring the PNM service.

Scenario 720 illustrates exemplary UI for when the PNM (people near me)service has been enabled by the user. Reduced PNM sidebar tile 722provides an indication of the number of people nearby and also providesa selection to view more detailed information regarding the peoplenearby. Expanded PNM sidebar tile 724 provides further options regardingthe display name the local user wants published and other options forconfiguring the PNM service and viewing more detailed presenceinformation.

Scenario 730 illustrates exemplary UI for when the network isunavailable. Reduced PNM sidebar tile 732 provides a selection to viewdetails of the network unavailability. Expanded PNM sidebar tile 734provides the options for configuring the PNM service while alsoproviding an option to troubleshoot the network failure.

FIG. 8 illustrates an exemplary state table for implementing the userinterface for the publication and discovery of presence information onthe network in accordance with the present invention. Finite statemachine 800 includes ten states regarding the presentation of the PNM(people near me) user interface based upon the state of the PNM service.

Initially, the monitoring application of a mobile device is at a state801, indicating that neither the PNM service nor the PNM sidebar tileare enabled and the bar tile is not visible. When the PNM sidebar tileis enabled, state machine 800 moves to a state 802.

At state 802, the PNM sidebar tile is in a standby mode awaiting furtherinput from the local user. The input of the local user may be to disablethe PNM sidebar tile. If the local user disables the PNM sidebar tile,state machine 800 moves back to state 801. In one embodiment, when thePNM sidebar tile is enabled for the first time (i.e., state 802 isreached from state 801), state machine 800 moves to state 803.

At state 803, a flyout or other external window is provided to the localuser automatically, so that the local user may select initial optionsrelated to the PNM service (e.g., a display name). If the user choosesto cancel without selecting further options, state machine 800 revertsto state 802. However, if the user chooses to select options for the PNMservice, state machine 800 advances to state 804.

In an alternative embodiment, state 803 is not included and the optionsare not provided. The local user may then select to enable the PNMservice and the state moves directly from state 802 to state 804.

State 804 is included among the states (804, 805, 806, 807) that arewithin state region 820. State region 820 represents when the PNMservice is being enabled or has been enabled. At state 804, the PNMservice is being enabled. If the enabling process is successful, statemachine 800 moves to state 805 where the PNM service is enabled and thepeople nearby are displayed to the user. However, if no network is foundduring the enabling process, state machine 800 moves to state 806.

At state 806, a waiting cycle is entered where the PNM system waits forthe network to return. State 806 may also be reached from state 805 whena network failure occurs while the PNM service is enabled. When thenetwork is again available, state machine 800 moves to state 805 wherethe PNM is enabled and displaying the people nearby.

While the PNM service is being enabled at state 804, a connection to therover (see FIG. 4) may not be established. As previously described, therover includes code for implementing the PNM service. If the rover isnot reached after a specified count (e.g., 12 seconds), then statemachine 800 moves from state 804 to state 807. At state 807, theenabling process waits 5 seconds and then returns to state 804 to retrya connection to the rover.

In certain circumstances, an error may occur during the enabling processthat is critical enough to prevent the PNM service from operatingcorrectly. When a critical error occurs, the state moves from state 804to state 808. At state 808, the local is notified of the critical errorand that the PNM service cannot proceed. The local user may then selectto disable the PNM sidebar tile and state machine 800 moves back tostate 801.

At any one of the states within state region 820, the user may select tocancel a current operation. Canceling the current operation,discontinues the enablement or disables the PNM service. With the PNMservice disabled, state machine 800 moves back to state 802 where thePNM sidebar tile is in a standby mode awaiting further input from thelocal user.

Additionally, at any one of the states within state region 820, the usermay select to close the PNM sidebar tile or the sidebar itself. If theuser makes a selection to disable the PNM sidebar tile or the sidebar,state machine 800 moves to state 810. At state 810, the effected systemsand folders (e.g., contacts folder) are cleaned up and the PNM sidebartile is disabled, moving state machine 800 back to state 801. In oneembodiment, when the system is cleaned up, the instances of PNM contactsand other PNM data are removed from the file system. Also, the SSDPlayer (see FIG. 4) is instructed to discontinue publishing the localuser's presence and discovering the presence information of other nearbyuser's on the network.

FIG. 9 illustrates exemplary identity verification with relation to apresence notification of a nearby user, in accordance with the presentinvention. For identity verification, user 1 has a set of elements 910associated with a presence notification (i.e., alive packet). A publickey (Pu1) 911 and private key (Pr1) 912 are associated with user 1. Data(D) is sent in the presence notification that includes display name 913,sharing address 914, timestamp 915, and hash(Pu1+salt) 916. Data (D) issigned with the private key (Pr1) 911 so that data (D) has an associatedsignature S1(D) 917.

Display Name 913 and sharing address 914 are optionally included in thepresence notification to allow a local user to publish a name to nearbyusers that do not know the local user and to notify nearby user that thelocal user has shared information. Timestamp 915 is included to providea interval of time that the signature S1(D) is valid. Hash(Pu1+salt) 916is also optionally included. Hash(Pu1+salt) 916 is a hashed version ofpublic key (Pu1) 911 along with an amount of random data referred to as“salt”. The salt is also published in data (D) when salt is included inthe hash. Hashing public key (Pu1) 911 ensures that a third party is notable to monitor the public keys as they are transferred between users. Athird party viewing a hashed public key sees only random data that isnot coherent as a public key. The addition of salt to hashed public keyallows the public key to be further obfuscated and assists in preventingtracking of the public key. Hashing public key (Pu1) 911 also providesfor narrowing down the identity of the user publishing data (D). Withoutthe hashed public key, it may be necessary to try the public key of eachcontact to determine who signed data (D). With the published hashedpublic key, the contacts may first be queried for the contacts with apublic key that hashes to match Hash(Pu1+salt) 916. PublishingHash(Pu1+salt) 916 therefore allows the results to be narrowed,increasing the speed of the verification process. In other embodiments,public key (Pu1) 910 is not hashed or instead hashed without the salt(e.g., a random reordering of the public key bits).

When user 1 generates private key (Pr1) 912, public key (Pu1) 911 isalso generated and associated with private key (Pr1) 912. User 1 is thenable to send public key (Pu1) 911 to user 2. With the disseminatedpublic key, user 1 is able to sign a set of data (e.g., D) with privatekey (Pr1) 912, such data includes signature S1(D) 917. Accordingly, onlyusers that have public key (Pu1) 911 associated with user 1 (e.g., user2) are able to view the data signed with private key (Pr1) 912 if thedata was encrypted. Regardless of the encryption used, signature S1(D)still proves that data (D) was not tampered with and that data (D)originated from user 1, thereby proving the identity of user 1. Forexample, with public key (Pu1) 911, user 2 is able generate anequivalent hash of the public key (e.g., Hash(Pu1+salt) 921) to comparewith the original hash of the public key (e.g., Hash(Pu1+salt) 916).When the hashes match (and the data was encrypted), user 2 knows thatdisplay name 913, sharing address 914, and timestamp 915 indeedoriginated from user 1 rather than a malicious user.

Signature S1(D) 917 prevents a malicious user from attempting torepublish the data published by user 1 on another network by changingsharing address 914. An attempted change to sharing address 914 breakssignature S1(D) 917 so that a user receiving the malicious rebroadcastis notified that data is not verified. Furthermore, the malicious useris prevented from resigning the data since they do not have private key(Pr1) 912.

Additionally, the inclusion of timestamp 915 causes signature S1(D) 917to be valid for specified period of time. When the period of timeexpires, so does the identity verification. Timestamp 915 preventsmalicious users from rebroadcasting the data without changes once aparticular period of time has passed. Other users receiving this dataonce the period of time has expired simply ignore the data sincetimestamp 915 has expired.

In one embodiment of the present invention, the data transferredcorresponding to the presence of user 1 nearby on the network is notencrypted even though public key infrastructure (PK1) is used. Instead,the use of public and private keys is limited to verification of theidentity of a user as the source of the data. The data sent is writtenin plain text and therefore viewable, but the public key encryptionverifies the identity of the user for which that data is published.

As stated previously with relation to FIG. 6 above, once the identity ofthe user publishing the data is verified as an existing contact, aricher data set may be provided to the user, improving the display ofthe PNM information to the user.

The above specification, examples and data provide a completedescription of the manufacture and use of the composition of theinvention. Since many embodiments of the invention can be made withoutdeparting from the spirit and scope of the invention, the inventionresides in the claims hereinafter appended.

1. A method for displaying presence information, comprising: displayinga graphical user interface that displays presence information on adisplay of a computing device; presenting an option within the graphicaluser interface to input an alias that is published to other users on anetwork; populating the graphical user interface with a number of nearbyusers on the network as determined by monitoring for presence ofcontacts representing the nearby users on the network that are within adetermined proximity to a local user; and when determined, displayingmore detailed information relating to the number of users nearby thatcomprises presence information along with contact information providedby a contacts application associated with the computing device.
 2. Themethod of claim 1, wherein presenting the option within the graphicaluser interface to input the alias that is published to other users on anetwork comprises in response to receiving an entry of the alias withinthe graphical user interface publishing the alias to the other users onthe network.
 3. The method of claim 1, further comprising displaying aselection within the graphical user interface that when selecteddisplays the more detailed information relating to the number of users.4. The method of claim 1, wherein populating the graphical userinterface with the number of nearby users on the network comprisesdynamically updating the number of nearby users.
 5. The method of claim1, wherein displaying more detailed information relating to the numberof users comprises displaying the more detailed information in adifferent window from the display of the number of nearby users.
 6. Themethod of claim 1, wherein populating the graphical user interface withthe number of nearby users on the network as determined by monitoringfor presence of contacts representing the nearby users on the networkthat are within a determined proximity to a local user occurs inresponse to a selection of a start selection.
 7. The method of claim 1,further comprising displaying an indication of when the network isunavailable and an option to troubleshoot the network within thegraphical user interface.
 8. The method of claim 1, further comprisingassociating a lifetime property that indicates a predetermined period oftime of how long the alias of is published to the other users on thenetwork.
 9. The method of claim 1, wherein monitoring for presence ofcontacts representing the nearby users on the network that are withinthe determined proximity comprises monitoring for alive messages sentfrom other computing devices.
 10. A computer-readable storage mediumthat includes computer-executable instructions for displaying presenceinformation, comprising: displaying a graphical user interface thatdisplays presence information; populating the graphical user interfacewith a number of nearby users on the network as determined by monitoringfor presence of contacts representing the nearby users on the networkthat are within a determined proximity to a local user; presenting anoption within the graphical user interface to input an alias that ispublished to other users on a network when determined; and whendetermined, displaying more detailed information relating to the numberof users nearby that comprises presence information along with contactinformation provided by a contacts application associated with thecomputing device.
 11. The computer-readable storage medium of claim 10,wherein presenting the option within the graphical user interface toinput an alias that is published to other users on the network whendetermined comprises receiving an entry of the alias within thegraphical user interface and in response to receiving the entry of thealias publishing the alias to the other users on the network.
 12. Thecomputer-readable storage medium of claim 10, further comprisingdisplaying a selection within the graphical user interface that whenselected displays the more detailed information relating to the numberof users.
 13. The computer-readable storage medium of claim 10, whereinpopulating the graphical user interface with the number of nearby userson the network comprises dynamically updating the number of nearbyusers.
 14. The computer-readable storage medium of claim 10, whereindisplaying more detailed information relating to the number of userscomprises displaying the more detailed information in a different windowfrom the display of the number of nearby users.
 15. Thecomputer-readable storage medium of claim 10, further comprisingdisplaying an indication of when the network is unavailable and anoption to troubleshoot the network within the graphical user interface.16. An apparatus for displaying presence information, comprising: aprocessor; a display; an application configured to perform operations,comprising: displaying a graphical user interface on the display thatdisplays presence information; populating the graphical user interfacewith a number of nearby users on the network as determined by monitoringfor presence of contacts representing the nearby users on the networkthat are within a determined proximity to a local user; presenting anoption within the graphical user interface to input an alias that ispublished to other users on a network; and in response to receiving aselection to display more detailed information, displaying more detailedinformation relating to the number of users nearby that comprisespresence information along with contact information provided by acontacts application.
 17. The apparatus of claim 16, wherein presentingthe option within the graphical user interface to input an alias that ispublished to other users on the network when determined comprisesreceiving an entry of the alias within the graphical user interface andin response to receiving the entry of the alias publishing the alias tothe other users on the network.
 18. The apparatus of claim 16, furthercomprising displaying a selection within the graphical user interfacethat when selected displays the more detailed information relating tothe number of users.
 19. The apparatus medium of claim 16, whereinpopulating the graphical user interface with the number of nearby userson the network comprises dynamically updating the number of nearbyusers.
 20. The apparatus of claim 16, wherein displaying more detailedinformation relating to the number of users comprises displaying themore detailed information in a different window from the display of thenumber of nearby users.